import { Result } from '~~/lib/helper/result'
import prisma from '~~/lib/prisma'
import COS from 'cos-nodejs-sdk-v5'

export default defineEventHandler(async (event) => {
  const body = await readMultipartFormData(event)
  const userId = getLoginId(event)
  try {
    if (body?.length) {
      const fileType = body[0].type
      const fileName = body[0].filename
      if (
        fileType == 'image/jpeg' ||
        fileType == 'image/png' ||
        fileType == 'image/jpg'
      ) {
        const buffer = body[0].data!
        const config = useRuntimeConfig()
        // 初始化
        const cos = new COS({
          SecretId: config.SecretId, // 推荐使用环境变量获取；用户的 SecretId，建议使用子账号密钥，授权遵循最小权限指引，降低使用风险。子账号密钥获取可参考https://cloud.tencent.com/document/product/598/37140
          SecretKey: config.SecretKey, // 推荐使用环境变量获取；用户的 SecretKey，建议使用子账号密钥，授权遵循最小权限指引，
        })

        // 上传对象
        const data = await cos.putObject({
          Bucket: 'balabilibo-1310935002' /* 必须 */,
          Region: 'ap-nanjing' /* 必须 */,
          Key: fileName || '' /* 必须 */,
          Body: buffer, // 上传文件对象
        })
        console.log('cos', data, buffer)
        // await fs.writeFile(filePath, buffer)
        await prisma.user.update({
          where: { id: userId },
          data: { avatar: data.Location },
        })
        return Result.Ok(data.Location, 200, '上传头像成功！')
      } else {
        return Result.Error('头像格式错误！')
      }
    } else {
      return Result.Error('请上传头像！')
    }
  } catch (error: any) {
    console.log('error', error)
    return Result.Error('上传头像失败！' + error.messsage)
  }
})
